package com.zhengbing.tj.service;

import com.zhengbing.tj.entity.Permission;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;

/**
 * 权限服务接口
 * 定义权限相关的业务操作
 *
 * @author zhengbing
 * @date 2024-08-22
 */
public interface PermissionService extends IService<Permission> {
    
    /**
     * 根据用户ID查询权限列表
     * @param userId 用户ID
     * @return 权限列表
     */
    List<Permission> getPermissionsByUserId(Long userId);
    
    /**
     * 根据角色ID查询权限列表
     * @param roleId 角色ID
     * @return 权限列表
     */
    List<Permission> getPermissionsByRoleId(Long roleId);
    
    /**
     * 保存角色权限关系
     * @param roleId 角色ID
     * @param permissionIds 权限ID列表
     */
    void saveRolePermissions(Long roleId, List<Long> permissionIds);
    
    /**
     * 检查用户是否有权限
     * @param userId 用户ID
     * @param permissionCode 权限标识
     * @return 是否有权限
     */
    boolean hasPermission(Long userId, String permissionCode);
    
    /**
     * 根据token获取用户权限
     * @param token 用户认证令牌
     * @return 权限列表
     */
    List<Permission> getPermissionsByToken(String token);
}